package class01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;


public class DataTest {
    public static void main(String[] args) throws ParseException {
//        currentTimeMillis()：用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
        long time = System.currentTimeMillis();
        System.out.println(time);
//        Date(long 毫秒数)：把该毫秒值换算成日期时间对象
        Date date = new Date(time);
        //使用无参构造器创建的对象可以获取本地当前时间。
        Date date1 = new Date();
        System.out.println(date);
        //getTime()：返回自1970年1月1日0时0分0秒（UTC）以来的毫秒数。
        long time1 = date1.getTime();
        System.out.println(time1);
        //toString()：返回此Date对象表示的时间值。返回串为：星期 、月、日、时、分、秒 、记时标准、年
        String s = date1.toString();

        System.out.println(s);
        System.out.println("=======================================");
        //利用构造器传入日期格式化的格式
        SimpleDateFormat simpleFormatter = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 SSS毫秒  E Z");
//        format(Date date)：格式化日期对象，返回格式化后的字符串。
        String format = simpleFormatter.format(date1);
        System.out.println(format);
        System.out.println("=======================================");
        String s1 = "2024年05月23日 08时32分02秒 184毫秒  周四 +0800";
        //parse(String source)：把格式化后的字符串解析为日期对象。
        Date parse = simpleFormatter.parse(s1);
        System.out.println(parse);

//        日历
        System.out.println("=======================================");
        Calendar calendar = Calendar.getInstance();
//        getWeekYear()：返回当前日期的年份，该年份是ISO周日历系统使用的年份。
        System.out.println(calendar.getWeekYear());
        //get(int field)：返回给定日历字段的值。
//        ● 注意：
//  ○ 获取月份时：一月是0，二月是1，以此类推，12月是11
//  ○ 获取星期时：周日是1，周一是2 ， 。。。。周六是7
        System.out.println(calendar.get(Calendar.YEAR));
        int i = calendar.get(Calendar.MONTH)+1;
        System.out.println(i);
        //get(int field)：返回给定日历字段的值。
        //返回月中的天数（几号）
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        //获取时（12时制）
        System.out.println(calendar.get(Calendar.HOUR));
        //获取时（24时制）
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        //获取分
        System.out.println(calendar.get(Calendar.MINUTE));
        //获取秒
        System.out.println(calendar.get(Calendar.SECOND));
        //获取周中天（周几）
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));



        TimeZone t = TimeZone.getTimeZone("America/Los_Angeles");
        Calendar c = Calendar.getInstance(t);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DATE);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute);

        Calendar calendar1 = Calendar.getInstance();
        // 从一个 Calendar 对象中获取 Date 对象
        Date date2 = calendar.getTime();

        // 使用给定的 Date 设置此 Calendar 的时间
        date2 = new Date(234234235235L);
        calendar1.setTime(date);
        calendar1.set(Calendar.DAY_OF_MONTH, 8);
        System.out.println("当前时间日设置为8后,时间是:" + calendar1.getTime());

        calendar1.add(Calendar.HOUR, 2);
        System.out.println("当前时间加2小时后,时间是:" + calendar1.getTime());
        //add()根据日历的规则，为给定的日历字段添加或者减去指定的时间量
        calendar.add(Calendar.MONTH, -2);
        System.out.println("当前日期减2个月后,时间是:" + calendar.getTime());




    }
}
